package com.example.skycode7.dao;

import com.example.skycode7.BEAN.AdminBean;
import com.example.skycode7.BEAN.newsBean;
import com.example.skycode7.BEAN.noticeBean;
import com.example.skycode7.utill.DBConnection;

import java.sql.*;
import java.util.ArrayList;
import java.util.List;

public class AdminDao {
    DBConnection DBConn = new DBConnection();
    public boolean CheckLogin(String s1,String s2) throws SQLException {
        Connection conn=DBConn.getConn();//获取Mysql链接
        Statement statement=conn.createStatement();// 获取处理对象
        ResultSet rs=null;//声明结果集对象
        boolean OK=true;
        String sql="select * from admin where Adminname = '"+s1+"'and AdminPwd ='"
                +s2+"'";//查询账号密码语句
        rs = statement.executeQuery(sql);//执行sql查询
        if (!rs.next()){//如果没查询出数据 没有该用户
            OK = false;
        }else {
            OK = true;//表示有该用户
            //todo 后期需要添加账户密码严格验证
        }
        return OK;
    }
    DBConnection db = new DBConnection();
    /**
     * 添加新闻
     * @param news
     * @return
     */
    public int add(AdminBean news){
        Connection conn = db.getConn();//conn代表mysql的连接
        String sql = "insert into news values(null,?,?,?,?)";//使用jdbc预处理对象添加
        try {
            PreparedStatement ps = conn.prepareStatement(sql);
            //将新闻数据对象中数据依次绑定到sql命令中
            ps.setString(1,news.getAdminName());
            ps.setString(2,news.getAdminPwd());
            ps.setInt(3,news.getAdminType());
            ps.setString(4,news.getLastLonginTime());
            return ps.executeUpdate();//执行sql命令 完成数据插入
        } catch (SQLException e) {
            System.out.println("插入news表异常");
        }
        return 0;//如果添加异常 返回0
    }

    /**
     * 删除功能
     * @param AdminId
     * @return
     */
    public int delete(int AdminId){
        Connection conn = db.getConn();
        String sql = "delete from news where NoticeID = ?";
        try {
            PreparedStatement ps = conn.prepareStatement(sql);
            ps.setInt(1,AdminId);
            return ps.executeUpdate();//执行删除命令 返回删除受影响行
        } catch (SQLException e) {
            System.out.println("删除news表异常");
        }
        return 0;//如果添加异常 返回0
    }

    /**
     * 更新功能
     * @param news
     * @return
     */
    public int update(AdminBean news){
        Connection conn = db.getConn();//conn代表mysql的连接
        String sql = "update news set AdminName=?,AdminPwd=?,AdminType=?,LastLonginTime=? where AdminId=?";//使用jdbc预处理对象添加
        try {
            PreparedStatement ps = conn.prepareStatement(sql);
            //将新闻数据对象中数据依次绑定到sql命令中
            ps.setString(1,news.getAdminName());
            ps.setString(2,news.getAdminPwd());
            ps.setInt(3,news.getAdminType());
            ps.setString(4,news.getLastLonginTime());
            ps.setInt(5,news.getAdminID());
            return ps.executeUpdate();//执行sql命令 完成数据插入
        } catch (SQLException e) {
            System.out.println("插入news表异常");
        }
        return 0;//如果添加异常 返回0
    }

    /**
     * 获取新闻数据
     * @param page 传递进来页码 最小1
     * @return List一个新闻集合
     */
    public List<AdminBean> getlist(int page){
        Connection conn = db.getConn();
        String sql = "select * from news limit ?,?";//第一个开始的行数 第二个是查询现实的条数
        List<AdminBean> list = new ArrayList<>();
        try {
            PreparedStatement ps = conn.prepareStatement(sql);
            //固定一页显示10条数据
            ps.setInt(1,(page-1)*10);//page为1时行数为0 page为2时 10行
            ps.setInt(2,10);//10表示显示10条数据
            ResultSet rs =ps.executeQuery();//rs数据查询结果集 全部是字符串
            while (rs.next()){
                AdminBean admin = new AdminBean();//每轮循环声明一个新闻对象
                admin.setAdminID(rs.getInt("AdminId"));//rs获取该行新闻ID 通过新闻对象封装方法设置新闻值
                admin.setAdminName(rs.getString("AdminName"));
                admin.setAdminPwd(rs.getString("AdminPwd"));
                admin.setAdminType(rs.getInt("AdminType"));
                admin.setLastLonginTime(rs.getNString("LastLonginTime"));
                list.add(admin);//将设置好的新闻对象放入list中
            }
        } catch (SQLException e) {
            System.out.println("查询news表异常");
        }
        return list;//异常情况返回空集合
    }
}
